﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using HousingInfo.Library;

namespace Admin.Admin
{
    public partial class Categories : System.Web.UI.Page
    {
        private static string mode = "",modesave=null;
        protected void Page_Load(object sender, EventArgs e)
        {
            //if ((Session["LOGIN"] == null) || (int)Session["ROLES"] != 1)
            //{
            //    Response.Redirect("Login.aspx");
            //}

            if (!IsPostBack)
            {
                mode = Request.QueryString["Mode"];
                modesave = Request.QueryString["save"];
                ////Mode NhaDat
                //if (mode == "1")
                //{
                //    btnUpdate.Visible = false;
                //    btnDelete.Visible = false;
                //    txtCategoryID.Visible = false;
                //    LabelCategoryID.Visible = false;
                //    PanelActions.Visible = true;
                //    lbHeaderActions.Text = "Thêm loại nhà đất";
                //    GridView1.Columns[0].Visible = false;

                //}
                //else //Mode Update
                //{
                //    btnAdd.Visible = false;
                //    lbHeaderActions.Text = "Sửa loại nhà đất";
                //}
                if (mode == "NhaDat")
                {
                    lbcategory.Text = "Danh Sách Loại Nhà Đất";
                    //lbHeaderActions.Text = "Chỉnh sửa danh mục nhà đất";
                    GridView1.Columns[2].HeaderText = "Mã Danh Mục Nhà Đất";
                    GridView1.Columns[3].HeaderText = "Tên Danh Mục Nhà Đất";
                    GridView1.DataSource = CategoryBOList.GetCategoryBOList_ByType(true, false, false, false, false);
                    GridView1.DataBind();
                    btnthemmoi.Visible = true;
                    btnxoa.Visible = true;                    
                }
                else if (mode == "TinTuc")
                {
                    lbcategory.Text = "Danh Sách Chủ Đề Tin Tức";
                    //lbHeaderActions.Text = "Chỉnh sửa danh mục Tin Tức";
                    GridView1.Columns[2].HeaderText = "Mã Danh Mục Tin Tức";
                    GridView1.Columns[3].HeaderText = "Tên Danh Mục Tin Tức";
                    GridView1.DataSource = CategoryBOList.GetCategoryBOList_ByType(false, false, false, true, false);
                    GridView1.DataBind();
                    btnthemmoi.Visible = true;
                    btnxoa.Visible = true;
                }
                else if (mode == "DienDan")
                {
                    if (modesave == "del")
                    {
                        messagedelete.Text = "Đã xóa chuyên mục";
                    }
                    else if (modesave == "complete")
                    {
                        messagedelete.Text = "Đã thêm chuyên mục";
                    }
                    lbcategory.Text = "Danh sách chuyên mục của diễn đàn";
                    //lbHeaderActions.Text = "Chỉnh sửa chủ đề diễn đàn";
                    GridView1.Columns[2].HeaderText = "Mã chuyên mục";
                    GridView1.Columns[3].HeaderText = "Tên chuyên mục";
                    GridView1.DataSource = CategoryBOList.GetCategoryBOList_ByType(false, true, false, false,false);
                    GridView1.DataBind();
                    btnthemmoi.Visible = true;
                    btnxoa.Visible = true;                    
                }
                else if (mode == "NgonNgu")
                {
                    lbcategory.Text = "Danh Sách Danh Mục Dự Án";
                    //lbHeaderActions.Text = "Chỉnh sửa danh mục ngôn ngữ";
                    GridView1.Columns[2].HeaderText = "Mã Dự Án";
                    GridView1.Columns[3].HeaderText = "Tên Dự Án";
                    GridView1.DataSource = CategoryBOList.GetCategoryBOList_ByType(false, false, true, false,false);
                    GridView1.DataBind();
                    btnthemmoi.Visible = true;
                    btnxoa.Visible = true;
                }
            }
        }

        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {                       
            if (mode == "DienDan")
            {
                Response.Redirect("EditCategory_Forums.aspx?id=" + GridView1.SelectedRow.Cells[2].Text + "&back=category");
            }
            else
            {
                CheckBox checkbox;
                txtCategoryID.Text = GridView1.SelectedRow.Cells[2].Text;
                txtcategoryname.Text = Server.HtmlDecode(GridView1.SelectedRow.Cells[3].Text);
                LabelCategoryID.Visible = true;
                txtCategoryID.Visible = true;
                checkbox = (CheckBox)GridView1.SelectedRow.FindControl("CheckBox1");
                isActive.Checked = checkbox.Checked;
                message.Text = "";

                if (PanelActions.Visible == false)
                    PanelActions.Visible = true;
                messagedelete.Text = "";
                btnAdd.Visible = false;
                btnUpdate.Visible = true;
                if (mode == "NhaDat")
                {
                    lbHeaderActions.Text = "Chỉnh sửa danh mục nhà đất";
                }
                else if (mode == "TinTuc")
                {
                    lbHeaderActions.Text = "Chỉnh sửa danh mục Tin Tức";
                }
                else if (mode == "NgonNgu")
                {
                    lbHeaderActions.Text = "Chỉnh sửa danh mục ngôn ngữ";
                }
            }
        }

        protected void btnUpdate_Click(object sender, EventArgs e)
        {

            int categoryid = Convert.ToInt32(txtCategoryID.Text);
            CategoryBO categorybo = CategoryBO.GetCategoryBO(categoryid);
            categorybo.CategoryName = txtcategoryname.Text.ToString();
            categorybo.IsActive = isActive.Checked;
            try
            {
                categorybo.Save();
                capnhatgridview();                
                message.Text = "Cập nhật thành công !";
            }
            catch
            {
                message.Text = "Cập nhật thất bại!";
            }
        }

        protected void btnAdd_Click(object sender, EventArgs e)
        {
            if (CategoryBOList.CheckCateName_WhenAddNew(txtcategoryname.Text.Trim()) == true)
            {
                CategoryBO categorybo = CategoryBO.NewCategoryBO();
                categorybo.CategoryName = txtcategoryname.Text;
                categorybo.IsActive = isActive.Checked;
                try
                {
                    if (mode == "NhaDat")
                    {
                        categorybo.IsHousingCategory = true;
                        categorybo.IsLanguage = false;
                        categorybo.IsNewsCategory = false;
                        categorybo.IsTopicForum = false;
                        categorybo.Save();
                        GridView1.DataSource = CategoryBOList.GetCategoryBOList_ByType(true, false, false, false, false);
                        GridView1.DataBind();
                    }
                    else if (mode == "TinTuc")
                    {
                        categorybo.IsHousingCategory = false;
                        categorybo.IsLanguage = false;
                        categorybo.IsNewsCategory = true;
                        categorybo.IsTopicForum = false;
                        categorybo.Save();
                        GridView1.DataSource = CategoryBOList.GetCategoryBOList_ByType(false, false, false, true, false);
                        GridView1.DataBind();
                    }
                    else if (mode == "DienDan")
                    {
                        categorybo.IsHousingCategory = false;
                        categorybo.IsLanguage = false;
                        categorybo.IsNewsCategory = false;
                        categorybo.IsTopicForum = true;
                        categorybo.Save();
                        GridView1.DataSource = CategoryBOList.GetCategoryBOList_ByType(false, true, false, false, false);
                        GridView1.DataBind();
                    }
                    else if (mode == "NgonNgu")
                    {
                        categorybo.IsHousingCategory = false;
                        categorybo.IsLanguage = true;
                        categorybo.IsNewsCategory = false;
                        categorybo.IsTopicForum = false;
                        categorybo.Save();
                        GridView1.DataSource = CategoryBOList.GetCategoryBOList_ByType(false, false, true, false, false);
                        GridView1.DataBind();
                    }
                    message.Text = "Thêm thành công !";
                }


                catch
                {
                    message.Text = "Thêm thất bại !";
                }
            }
            else
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Success", "alert('Danh Mục này đã có !!!')", true);
                return;
            }
        }

      protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {

            try
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    string strScript = "SelectDeSelectHeader(" + ((CheckBox)e.Row.Cells[0].FindControl("chkSelect")).ClientID + ");";
                    ((CheckBox)e.Row.Cells[0].FindControl("chkSelect")).Attributes.Add("onclick", strScript);
                }
            }
            catch
            {
                //report error
            }        
        }


        protected void btnthemmoi_Click(object sender, EventArgs e)
        {
            if (mode == "DienDan")
            {
                Response.Redirect("EditCategory_Forums.aspx");
            }
            else
            {
                PanelActions.Visible = true;
                lbHeaderActions.Text = "Thêm mới danh mục";
                LabelCategoryID.Visible = false;
                txtCategoryID.Visible = false;
                txtcategoryname.Text = "";
                btnAdd.Visible = true;
                btnUpdate.Visible = false;
            }
        }


        protected void btnxoa_Click(object sender, EventArgs e)
        {
                bool test = false;
                foreach (GridViewRow gvRow in GridView1.Rows)
                {
                    CheckBox chkSel = (CheckBox)gvRow.FindControl("chkSelect");
                    if (chkSel.Checked == true)
                    {
                        try
                        {
                            test = true;
                            int categoryid = Convert.ToInt32(gvRow.Cells[2].Text);
                            if (categoryid == 1 || categoryid == 4 || categoryid == 6 || categoryid == 9 || categoryid == 18 || categoryid == 19 || categoryid == 26 || categoryid == 27)
                            {
                                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Success", "alert('Đây là Nội dung mặt định của Website. Không thể xoá !!!')", true);
                                return;
                            }
                            else
                            {
                                if (mode == "NhaDat")
                                {
                                    if (NewsHouseBOList.CheckCategoryInNewsHouse(categoryid))
                                    {
                                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Success", "alert('Bạn phải xóa những tin thuộc loại nhà đất này !!!')", true);
                                        messagedelete.Text = "Lỗi khi xóa danh mục nhà đất : " + gvRow.Cells[3].Text;
                                        return;
                                    }
                                    CategoryBO.DeleteCategoryBO(categoryid);

                                }
                                else if (mode == "TinTuc")
                                {
                                    if (NewsBOList.CheckCategoryInNews(categoryid))
                                    {
                                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Success", "alert('Bạn phải xóa những tin thuộc danh mục tin tức này !!!')", true);
                                        messagedelete.Text = "Lỗi khi xóa danh mục tin tức : " + gvRow.Cells[3].Text;
                                        return;
                                    }
                                    CategoryBO.DeleteCategoryBO(categoryid);
                                }
                                else if (mode == "DienDan")
                                {
                                    if (SubTopicForumBOList.CheckCategoryInSubTopicForum(categoryid))
                                    {
                                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Success", "alert('Bạn phải xóa những tin thuộc chủ đề bình luận này !!!')", true);
                                        messagedelete.Text = "Lỗi khi xóa chủ để : " + gvRow.Cells[3].Text;
                                        return;
                                    }
                                    CategoryBO.DeleteCategoryBO(categoryid);
                                }
                                else
                                {
                                    CategoryBO.DeleteCategoryBO(categoryid);
                                }
                            }
                        }
                        catch
                        {
                            messagedelete.Text = "Xóa thất bại";
                            return;
                        }
                    }
                }
                if (test == false)
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Success", "alert('Chưa chọn thông tin cần xóa !!!')", true);
                    return;
                }
                else
                {
                    messagedelete.Text = "Xóa thành công !";
                    capnhatgridview();
                    PanelActions.Visible = false;
                }
        }

        protected void btndong_Click(object sender, EventArgs e)
        {
            PanelActions.Visible = false;
        }
        private void capnhatgridview()
        {
            if (mode == "NhaDat")
            {
                GridView1.DataSource = CategoryBOList.GetCategoryBOList_ByType(true, false, false, false,false);
                GridView1.DataBind();
            }
            else if (mode == "TinTuc")
            {
                GridView1.DataSource = CategoryBOList.GetCategoryBOList_ByType(false, false, false, true,false);
                GridView1.DataBind();
            }
            else if (mode == "DienDan")
            {
                GridView1.DataSource = CategoryBOList.GetCategoryBOList_ByType(false, true, false, false,false);
                GridView1.DataBind();
            }
            else if (mode == "NgonNgu")
            {
                GridView1.DataSource = CategoryBOList.GetCategoryBOList_ByType(false, false, true, false,false);
                GridView1.DataBind();
            }
        }

        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            this.BindGrid();
        }

        public void BindGrid()
        {
            capnhatgridview();
        }
    }
}
